export default {
  events: {}, // 存储事件和对应的回调
  eventData: {}, // 存储每个事件的最新数据

  // 订阅事件
  on(eventName, callBack) {
    if (!this.events[eventName]) {
      this.events[eventName] = [];
    }
    // 将回调函数添加到事件对应的回调列表中
    this.events[eventName].push(callBack);
  },

  // 发布事件
  emit(eventName, data) {
    // 如果传入了新的数据，就更新缓存
    if (data !== undefined) {
      this.eventData[eventName] = data;
    }

    if (this.events[eventName]) {
      // 如果没有传入新的数据，使用缓存的数据
      const eventData = this.eventData[eventName] || data;

      // 遍历事件的所有回调函数并执行
      this.events[eventName].forEach(callback => {
        callback(eventData);
      });
    }
  },

  // 取消订阅事件
  off(eventName, callBack) {
    if (this.events[eventName]) {
      // 从事件的回调列表中移除指定的回调函数
      this.events[eventName] = this.events[eventName].filter(callback => callback !== callBack);
    }
  }
};
